// api/session_api/session_create.go
package session_api

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"muziai-server/global"
	"muziai-server/models"
	"muziai-server/utils/jwts"
	"muziai-server/utils/res"
)

func (SessionApi) SessionCreateView(c *gin.Context) {
	var cr models.IDRequest
	err := c.ShouldBindJSON(&cr)
	if err != nil {
		res.FailWithError(c, err)
		return
	}
	_claims, _ := c.Get("claims")
	claims := _claims.(*jwts.Claims)

	var role models.AiRoleModel
	// 如果没有选择角色id
	if cr.ID == 0 {
		err = global.DB.First(&role, "is_system = ?", true).Error
		if err != nil {
			res.FailWithMsg(c, "无系统角色，请创建")
			return
		}
		cr.ID = role.ID
	} else {
		// 查角色是否存在
		err = global.DB.Take(&role, cr.ID).Error
		if err != nil {
			res.FailWithMsg(c, "角色不存在")
			return
		}
		if !role.IsSquare && !role.IsSystem {
			// 不在角色广场，就要判断这个角色是不是自己创建的
			if claims.UserID != role.UserID {
				res.FailWithMsg(c, "当前用户暂无此角色")
				return
			}
		}

	}

	model := models.SessionModel{
		Title:  fmt.Sprintf("与%s的会话", role.Title),
		UserID: claims.UserID,
		RoleID: cr.ID,
	}
	err = global.DB.Create(&model).Error
	if err != nil {
		res.FailWithMsg(c, "创建会话失败")
		return
	}
	res.OkWithData(c, model.ID)

}
